// Mesh Scene Node
// (c) jimon game studio

#ifndef JEH_IMESHSCENENODE
#define JEH_IMESHSCENENODE

#include "ISceneNode.h"
#include "jeMeshResource.h"

namespace je
{
	namespace scene
	{
		//! Mesh Scene Node
		class IMeshSceneNode:public je::scene::ISceneNode
		{
		public:
			//! Constructor
			IMeshSceneNode(video::IRender * Render,const jeStringd & SetNodeName)
				:ISceneNode(Render,SetNodeName)
			{
			}

			//! Destructor
			virtual ~IMeshSceneNode()
			{
			}

			//! Mesh Animation
			struct MeshAnimation
			{
				//! Animation Id
				u32 Id;

				//! Animation Time
				f32 Time;

				//! Constructor
				MeshAnimation()
					:Id(0),Time(0.0f)
				{
				}

				//! Constructor
				MeshAnimation(f32 NewTime)
					:Id(0),Time(NewTime)
				{
				}

				//! Set Id
				void SetId(u32 NewId)
				{
					Id = NewId;
				}
			};

			//! Set Animation
			virtual void SetAnimation(MeshAnimation & Animation) = 0;

			//! Get Animation
			virtual MeshAnimation & GetAnimation() = 0;

			//! Set Mesh Resource
			virtual void SetMeshResource(media::jeMeshResource * MeshResource,u1 UseUniqueMesh = false) = 0;

			//! Get Mesh Resource
			virtual media::jeMeshResource * GetMeshResource() = 0;

			//! Get Shared Mesh Resource
			virtual media::jeSharedMesh * GetSharedMeshResource() = 0;
		};
	}
}

#endif
